import VXETablePluginExportXLSX from "vxe-table-plugin-export-xlsx";
import ExcelJS from "exceljs";
import XEUtils from 'xe-utils'
import moment from 'moment'
import {
	// 全局对象
	VXETable,
	Column,
	Table,
	VxeModuleExport,
	Icon,
} from 'vxe-table'
import zhCN from 'vxe-table/es/locale/lang/zh-CN'
import 'vxe-table/styles/cssvar.scss'

// 按需加载的方式默认是不带国际化的，自定义国际化需要自行解析占位符 '{0}'，例如：
VXETable.setup({
	i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args),
})

VXETable.use(VXETablePluginExportXLSX,{ExcelJS})
const  vxeTable = (app)=> {
	 // 安装表格    // 安装列
	 app.use(Table)
		.use(Column)
		.use(VxeModuleExport)
}
export default vxeTable
// 自定义全局的格式化处理函数

//格式化代码集
VXETable.formats.add('formatCode', {
	cellFormatMethod ({cellValue}, cellObj, options = {value: 'value', label: 'label'}) {
		let name = ''
		if (cellObj && cellObj[cellValue]){
			const obj = cellObj[cellValue]
			name = obj[options.label]
			return name
		}
	}
})

//格式化日期
VXETable.formats.add('formatDate', {
	cellFormatMethod ({cellValue}, format) {
		if(cellValue){
			return moment(cellValue).format(format || 'YYYY-MM-DD')
		}
	}
})

//格式化时间
VXETable.formats.add('formatDateTime', {
	cellFormatMethod ({cellValue}, format) {
		if(cellValue){
			return moment(cellValue).format(format || 'YYYY-MM-DD HH:mm:ss')
		}
	}
})

//格式化溢出时间,超出范围,计量单位则向上冒泡到 小时 | 天 | 月
VXETable.formats.add('formatOverTime', {
	cellFormatMethod ({cellValue}, timeUnit = 'minutes') {
		if(cellValue){
			return moment.duration(cellValue, timeUnit).humanize()
		}
	}
})

//处理数据为空时显示为'-'
VXETable.formats.add('formatEmpty', {
	cellFormatMethod ({cellValue}) {
		return !cellValue ? '-' : cellValue
	}
})

//四舍五入金额，每隔3位逗号分隔，默认2位数
VXETable.formats.add('formatFixedMoney', {
	cellFormatMethod ({ cellValue }, digits) {
		return XEUtils.commafy(XEUtils.toNumber(cellValue), { digits: digits || '2'})
	}
})

//四舍五入百分比取整
VXETable.formats.add('formatFixedNumber', {
	cellFormatMethod ({ cellValue }) {
		return  (Number(cellValue)* 100).toFixed(0)  + '%'
	}
})
